package Servlet;

import java.io.IOException;
import java.util.ArrayList;

import javax.naming.NamingException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import EntityBeans.RichiestaAiuto;
import EntityBeans.UtenteRegistrato;
import Sessions.RecuperaDatiSessionRemote;
import Sessions.RegistrazioneSessionRemote;
import Sessions.RichiestaAiutoSessionRemote;
import Sessions.RichiesteAmiciziaSessionRemote;

/**
 * Servlet implementation class RicercaAiutoServlet
 */
public class RichiestaAiutoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private RequestDispatcher d;   
	private GestoreContesto contesto;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public RichiestaAiutoServlet() {
		super();
		contesto = new GestoreContesto();
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try {
			eseguiRichiesta(request,response);
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		try {
			eseguiRichiesta(request,response);
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	@SuppressWarnings("null")
	private void eseguiRichiesta(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, NamingException {
		RichiestaAiutoSessionRemote gestore = contesto.getGestore(RichiestaAiutoSessionRemote.class, "RichiestaAiutoSessionRemote");
		String idSessione = request.getParameter("id");
		String idRichiesta = request.getParameter("id");
		ArrayList<RichiestaAiuto> richiesteAiuto = gestore.richiesteAiutoInviate(idSessione);
		ArrayList<RichiestaAiuto> richiesteAiutoricevute = gestore.richiesteAiutoRicevute(idSessione);
		//ora
		RichiesteAmiciziaSessionRemote gestore1 = contesto.getGestore(RichiesteAmiciziaSessionRemote.class, "RichiesteAmiciziaSessionRemote");
		//ArrayList<UtenteRegistrato> utenti = gestore1.recuperaUtenteRegistrato();
		
		if((richiesteAiuto==null || richiesteAiuto.size()==0)&&(richiesteAiutoricevute==null || richiesteAiutoricevute.size()==0))
		{
			request.setAttribute("msg", "Non sono presenti rihcieste di aiuto  per l'utente selezionato");
			request.setAttribute("idSessione", idSessione);
			d=request.getRequestDispatcher("ErroreUtenteReg.jsp");
			d.forward(request, response);
		}
		else
		{
			if(richiesteAiuto!=null)
			{
				if(richiesteAiuto.size()!=0)
				{
					request.setAttribute("numeroAiuti", richiesteAiuto.size());
					request.setAttribute("idSessione", idSessione);
					request.setAttribute("idRichiesta", idRichiesta);
					request.setAttribute("richiesteinviate", "true");
					for(int i=0; i<richiesteAiuto.size();i++)
					{
						request.setAttribute("iddatore"+i, richiesteAiuto.get(i).getIdutentedatore());
						//ora
						request.setAttribute("nomedatore"+i, gestore1.ricercaNomeUtente(richiesteAiuto.get(i).getIdutentedatore()));
						request.setAttribute("cognomedatore"+i, gestore1.ricercaCognomeUtente(richiesteAiuto.get(i).getIdutentedatore()));
						request.setAttribute("idlavoratore"+i, richiesteAiuto.get(i).getIdutentelavoratore());
						request.setAttribute("nomelavoratore"+i, gestore1.ricercaNomeUtente(richiesteAiuto.get(i).getIdutentelavoratore()));
						request.setAttribute("cognomelavoratore"+i, gestore1.ricercaCognomeUtente(richiesteAiuto.get(i).getIdutentedatore()));
						request.setAttribute("descrizione"+i, richiesteAiuto.get(i).getDescrizione());
						request.setAttribute("data"+i, richiesteAiuto.get(i).getData());
						request.setAttribute("ora"+i, richiesteAiuto.get(i).getOra());
					}
				}
			}
			else
				request.setAttribute("richiesteinviate", "false");
			
			if(richiesteAiutoricevute!=null)
			{
				
				request.setAttribute("prova","");
				if(richiesteAiutoricevute.size()!=0)
			
			{
				request.setAttribute("prova","");
				request.setAttribute("numeroAiutiric", richiesteAiutoricevute.size());
				request.setAttribute("richiestericevute","true");
				request.setAttribute("idSessione", idSessione);
				request.setAttribute("idRichiesta", idRichiesta);
				for(int j=0; j<richiesteAiutoricevute.size(); j++)
				{
					request.setAttribute("iddatorer"+j, richiesteAiutoricevute.get(j).getIdutentedatore());
					request.setAttribute("nomedatorer"+j, gestore1.ricercaNomeUtente(richiesteAiutoricevute.get(j).getIdutentedatore()));
					request.setAttribute("cognomedatorer"+j, gestore1.ricercaCognomeUtente(richiesteAiutoricevute.get(j).getIdutentedatore()));
					request.setAttribute("idlavoratorer"+j, richiesteAiutoricevute.get(j).getIdutentelavoratore());
					request.setAttribute("nomelavoratorer"+j, gestore1.ricercaNomeUtente(richiesteAiutoricevute.get(j).getIdutentelavoratore()));
					request.setAttribute("cognomelavoratorer"+j, gestore1.ricercaCognomeUtente(richiesteAiutoricevute.get(j).getIdutentelavoratore()));
					request.setAttribute("descrizioner"+j, richiesteAiutoricevute.get(j).getDescrizione());
					request.setAttribute("giornor"+j, richiesteAiutoricevute.get(j).getData().getDate());
					request.setAttribute("meser"+j, richiesteAiutoricevute.get(j).getData().getMonth()+1);
					request.setAttribute("annor"+j, richiesteAiutoricevute.get(j).getData().getYear()+1900);
					request.setAttribute("orer"+j, richiesteAiutoricevute.get(j).getOra().getHours());
					request.setAttribute("minutir"+j, richiesteAiutoricevute.get(j).getOra().getMinutes());
					request.setAttribute("secondir"+j, richiesteAiutoricevute.get(j).getOra().getSeconds());
				
				}
			}
			}
			else
			{	request.setAttribute("prova","");
				request.setAttribute("richiestericevute", "false");
			}
			d=request.getRequestDispatcher("RichiestaAiuto.jsp");
			d.forward(request,response);	
			
		}

		}
		
		
		
	

	}


